﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Infra.Common.DAO
{
    public class TipoProdutoDAL // : IDisposable
    {
        public static void Salvar(Infra.Entity.STKTIPOPRODUTO tipo)
        {
            using (Infra.Entity.DBInfraEntityDataContext dc = new Entity.DBInfraEntityDataContext())
            {
                if (tipo.CODTipoProd != 0)
                {
                    //Alterar o tipo de produto
                    var tipoProd = dc.STKTIPOPRODUTOs.Single(tp => tp.CODTipoProd == tipo.CODTipoProd);
                    tipoProd.tipNome = tipo.tipNome;
                    dc.SubmitChanges();
                }
                else
                {
                    //Salvar o tipo de produto
                    dc.STKTIPOPRODUTOs.InsertOnSubmit(tipo);
                    dc.SubmitChanges();
                }
            }
        }

        public static void Excluir(int idTipo)
        {
            using (Infra.Entity.DBInfraEntityDataContext dc = new Entity.DBInfraEntityDataContext())
            {
                var tipoProd = dc.STKTIPOPRODUTOs.Single(tp => tp.CODTipoProd == idTipo);
                dc.STKTIPOPRODUTOs.DeleteOnSubmit(tipoProd);
                dc.SubmitChanges();
            }
        }

        public static List<Infra.Entity.STKTIPOPRODUTO> Pesquisar(int codigo, String nome)
        {
            List<Infra.Entity.STKTIPOPRODUTO> tipos = null;
            using (Infra.Entity.DBInfraEntityDataContext dc = new Entity.DBInfraEntityDataContext())
            {
                var tipoProd = from tp in dc.STKTIPOPRODUTOs
                               where ((codigo.Equals(0) || codigo.Equals(tp.CODTipoProd)) &&
                                       (nome.Equals(string.Empty) || nome.Equals(tp.tipNome.Contains(nome))))
                               select tp;
                tipos = tipoProd.ToList();
            }
            return tipos;
        }


        public static List<Infra.Entity.STKTIPOPRODUTO> Pesquisar()
        {
            List<Infra.Entity.STKTIPOPRODUTO> tipos = null;
            using (Infra.Entity.DBInfraEntityDataContext dc = new Entity.DBInfraEntityDataContext())
            {
                var tipoProd = from tp in dc.STKTIPOPRODUTOs
                               select tp;
                tipos = tipoProd.ToList();
            }
            return tipos;
        }


        public static List<Infra.Entity.STKTIPOPRODUTO> PesquisarSP(int codigo, String nome)
        {
            List<Infra.Entity.STKTIPOPRODUTO> tipos = null;
            // Pesquisa usando Stored procedure
            using (Infra.Entity.DBInfraEntityDataContext dc = new Entity.DBInfraEntityDataContext())
            {
                // var tipoProd = dc.SP_PESQUISA_TIPOPRODUTO(codigo, nome);
                //tipos = tipoProd.ToList();
            }
            return tipos;
        }

    }

}
